﻿Imports System.Windows.Forms
Imports Publics

Public Class FrmThangNamBaoCao
    Private dtmTuNgay As Nullable(Of Date)
    Private dtmDenNgay As Nullable(Of Date)

    Private _laBaoCaoGiaThanhTheoNam As Boolean
    Public Property laBaoCaoGiaThanhTheoNam() As Boolean
        Get
            Return _laBaoCaoGiaThanhTheoNam
        End Get
        Set(ByVal value As Boolean)
            _laBaoCaoGiaThanhTheoNam = value
        End Set
    End Property

    Private _HienThiCheckboxLocTheoNgayThucNhapXuat As Boolean = False
    Public Property HienThiCheckboxLocTheoNgayThucNhapXuat() As Boolean
        Get
            Return _HienThiCheckboxLocTheoNgayThucNhapXuat
        End Get
        Set(ByVal value As Boolean)
            _HienThiCheckboxLocTheoNgayThucNhapXuat = value
        End Set
    End Property

    Private _CaptionLocNgay As String
    Public Property CaptionLocNgay() As String
        Get
            Return _CaptionLocNgay
        End Get
        Set(ByVal value As String)
            _CaptionLocNgay = value
        End Set
    End Property

    Private _locTheoNgayThucNhapXuat As Boolean = False
    Public Property locTheoNgayThucNhapXuat() As Boolean
        Get
            Return _locTheoNgayThucNhapXuat
        End Get
        Set(ByVal value As Boolean)
            _locTheoNgayThucNhapXuat = value
        End Set
    End Property

    Private _Nam As Integer
    Public Property Nam() As Integer
        Get
            Return _Nam
        End Get
        Set(ByVal value As Integer)
            _Nam = value
        End Set
    End Property

    Private _Thang As Integer
    Public Property Thang() As Integer
        Get
            Return _Thang
        End Get
        Set(ByVal value As Integer)
            _Thang = value
        End Set
    End Property

    Private _LaThang As Integer
    Public Property LaThang() As Integer
        Get
            Return _LaThang
        End Get
        Set(ByVal value As Integer)
            _LaThang = value
        End Set
    End Property

    ''' <summary>
    ''' Thời gian báo cáo bắt đầu từ ngày
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property TuNgay() As Nullable(Of Date)
        Get
            Return dtmTuNgay
        End Get
        Set(ByVal value As Nullable(Of Date))
            dtmTuNgay = value
        End Set
    End Property
    ''' <summary>
    ''' Thời gian báo cáo đến ngày
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property DenNgay() As Nullable(Of Date)
        Get
            Return dtmDenNgay
        End Get
        Set(ByVal value As Nullable(Of Date))
            dtmDenNgay = value
        End Set
    End Property
    Private _ThoiGianBaoCao As String
    Public Property ThoiGianBaoCao() As String
        Get
            Return _ThoiGianBaoCao
        End Get
        Set(ByVal value As String)
            _ThoiGianBaoCao = value
        End Set
    End Property

    Private Sub FrmThangNamBaoCao_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If (e.Modifiers = GetKeyModifide("EXIT") And _
      e.KeyCode = GetKeyCode2("EXIT")) Or _
      (e.KeyCode = GetKeyCode("EXIT")) Then
            btnHuyBo_Click(Nothing, Nothing)
        End If

        If (e.Modifiers = GetKeyModifide("ACCEPT") And _
      e.KeyCode = GetKeyCode2("ACCEPT")) Or _
      (e.KeyCode = GetKeyCode("ACCEPT")) Then

            If btnChapNhan.Enabled = True And btnChapNhan.Visible = True Then
                btnChapNhan_Click(Nothing, Nothing)
            End If

        End If
    End Sub

    Private Sub FrmThangNamBaoCao_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        spinTuThang.Enabled = False
        spinDenThang.Enabled = False
        spinTuNam.Enabled = False
        spinDenNam.Enabled = False
        dteTuNgay.Enabled = False
        dteDenNgay.Enabled = False
        spinQuy.Enabled = True
        spinNam.Enabled = True
        chkLocNgay.Visible = False
        '
        picChonThoiGian.BackgroundImage = Global.Publics.My.Resources.ResourceManager.GetObject("chon_thoi_gian")
        Select Case vIntKTThang
            Case 1, 2, 3
                spinQuy.EditValue = 1
            Case 4, 5, 6
                spinQuy.EditValue = 2
            Case 7, 8, 9
                spinQuy.EditValue = 3
            Case 10, 11, 12
                spinQuy.EditValue = 4
        End Select

        If laBaoCaoGiaThanhTheoNam Then
            spinTuThang.EditValue = 1
        Else
            spinTuThang.EditValue = vIntKTThang
        End If

        spinTuNam.EditValue = vIntKTNam
        spinDenThang.EditValue = vIntKTThang
        spinDenNam.EditValue = vIntKTNam
        spinNam.EditValue = vIntKTNam
        ' 
        If TuNgay IsNot Nothing Then
            rdgThangNamBC.Focus()
            rdgThangNamBC.SelectedIndex = 2
            rdgThangNamBC.Select()
            dteTuNgay.EditValue = TuNgay
            'Nếu từ ngày(tính theo tháng, năm hạch toán) lớn hơn ngày của máy client thì lấy ngày cuối cùng của tháng
            If CDate(dteTuNgay.EditValue) > Date.Now Then
                dteDenNgay.EditValue = DateSerial(vIntKTNam, vIntKTThang, Date.DaysInMonth(vIntKTNam, vIntKTThang))
            Else
                'Ngược lại thì lấy ngày hiện tại
                dteDenNgay.EditValue = Date.Now
            End If
        Else
            rdgThangNamBC.Focus()
            rdgThangNamBC.SelectedIndex = 1
            rdgThangNamBC.Select()
            dteTuNgay.EditValue = DateSerial(vIntKTNam, vIntKTThang, 1)
            'Nếu từ ngày(tính theo tháng, năm hạch toán) lớn hơn ngày của máy client thì lấy ngày cuối cùng của tháng
            If CDate(dteTuNgay.EditValue) > Date.Now Then
                dteDenNgay.EditValue = DateSerial(vIntKTNam, vIntKTThang, Date.DaysInMonth(vIntKTNam, vIntKTThang))
            Else
                'Ngược lại thì lấy ngày hiện tại
                dteDenNgay.EditValue = Date.Now
            End If
        End If
        '
        rdgThangNamBC_SelectedIndexChanged(Nothing, Nothing)
        '
    End Sub

    Private Sub btnHuyBo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnHuyBo.Click
        dtmTuNgay = Nothing
        dtmDenNgay = Nothing
        Me.Close()
    End Sub

    Private Sub spinNam_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles spinNam.KeyDown
        If e.KeyCode = Keys.Enter Then
            btnChapNhan.Select()
        End If
    End Sub

    Private Sub spinDenNam_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles spinDenNam.KeyDown
        If e.KeyCode = Keys.Enter Then
            btnChapNhan.Select()
        End If
    End Sub

    Private Sub dteDenNgay_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dteDenNgay.KeyDown
        If e.KeyCode = Keys.Enter Then
            btnChapNhan.Select()
        End If
    End Sub

    Private Sub rdgThangNamBC_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles rdgThangNamBC.KeyDown
        If e.KeyCode = Keys.Enter Then
            Select Case rdgThangNamBC.SelectedIndex
                Case 0
                    spinQuy.Focus()
                Case 1
                    spinTuThang.Focus()
                Case 2
                    dteTuNgay.Focus()
            End Select
        End If
    End Sub

    Private Sub rdgThangNamBC_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rdgThangNamBC.SelectedIndexChanged
        Select Case rdgThangNamBC.SelectedIndex
            Case 0
                spinTuThang.Enabled = False
                spinDenThang.Enabled = False
                spinTuNam.Enabled = False
                spinDenNam.Enabled = False
                dteTuNgay.Enabled = False
                dteDenNgay.Enabled = False
                spinQuy.Enabled = True
                spinNam.Enabled = True
            Case 1
                spinTuThang.Enabled = True
                spinDenThang.Enabled = True
                spinTuNam.Enabled = True
                spinDenNam.Enabled = True
                dteTuNgay.Enabled = False
                dteDenNgay.Enabled = False
                spinQuy.Enabled = False
                spinNam.Enabled = False
            Case 2
                spinTuThang.Enabled = False
                spinDenThang.Enabled = False
                spinTuNam.Enabled = False
                spinDenNam.Enabled = False
                dteTuNgay.Enabled = True
                dteDenNgay.Enabled = True
                spinQuy.Enabled = False
                spinNam.Enabled = False

        End Select
    End Sub

    Private Sub btnChapNhan_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnChapNhan.Click
        Select Case rdgThangNamBC.SelectedIndex
            Case 0
                LaThang = True
                Nam = spinNam.EditValue
                ThoiGianBaoCao = "Quý " & spinQuy.Text & " năm " & spinNam.Text
                Select Case CInt(spinQuy.Text)
                    Case 1
                        dtmTuNgay = DateSerial(spinNam.EditValue, 1, 1).Date
                        dtmDenNgay = DateSerial(CInt(spinNam.Text), 3, Date.DaysInMonth(CInt(spinNam.Text), 3)).Date

                    Case 2
                        dtmTuNgay = DateSerial(spinNam.EditValue, 4, 1).Date
                        dtmDenNgay = DateSerial(CInt(spinNam.Text), 6, Date.DaysInMonth(CInt(spinNam.Text), 6)).Date

                    Case 3
                        dtmTuNgay = DateSerial(spinNam.EditValue, 7, 1).Date
                        dtmDenNgay = DateSerial(spinNam.EditValue, 9, Date.DaysInMonth(CInt(spinNam.Text), 9)).Date

                    Case 4
                        dtmTuNgay = DateSerial(spinNam.EditValue, 10, 1).Date
                        dtmDenNgay = DateSerial(spinNam.EditValue, 12, Date.DaysInMonth(spinNam.EditValue, 12)).Date

                End Select
            Case 1
                LaThang = True
                Nam = spinNam.EditValue
                dtmTuNgay = DateSerial(spinTuNam.Value, spinTuThang.Value, 1)
                dtmDenNgay = DateSerial(spinDenNam.Value, spinDenThang.Value, Date.DaysInMonth(spinDenNam.Value, spinDenThang.Value))
                If CInt(spinTuThang.Text) = CInt(spinDenThang.Text) And CInt(spinTuNam.Text) = CInt(spinDenNam.Text) Then
                    ThoiGianBaoCao = String.Format("Tháng {0} năm {1}", spinTuThang.Text, spinTuNam.Text)
                Else
                    ThoiGianBaoCao = String.Format("Từ tháng {0}/{1} đến tháng {2}/{3}", spinTuThang.EditValue, spinTuNam.EditValue, spinDenThang.EditValue, spinDenNam.EditValue)
                End If
            Case 2
                dtmTuNgay = dteTuNgay.DateTime.Date
                dtmDenNgay = dteDenNgay.DateTime.Date
                ThoiGianBaoCao = String.Format("Từ ngày {0} đến ngày {1}", dteTuNgay.Text, dteDenNgay.Text)
        End Select

        locTheoNgayThucNhapXuat = chkLocNgay.Checked
        If dtmTuNgay > dtmDenNgay Then
            dtmTuNgay = Nothing
            dtmDenNgay = Nothing
            MsgErr("Thời gian làm việc không đúng!")
        Else
            Me.Close()  'Thỏa mãn ngày thì close form
        End If
    End Sub
      
    Private Sub chkLocNgay_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkLocNgay.CheckedChanged
        If chkLocNgay.Checked Then
            rdgThangNamBC.SelectedIndex = 2
            rdgThangNamBC.Enabled = False
        Else 
            rdgThangNamBC.Enabled = True
        End If
    End Sub
End Class